$NG.AllReady(function (page, { useBeforeClick, useValuesChange, useUpdateRows, useDataIndexChange }) {
    const mstform = $NG.getCmpApi("p_form_internal_audit");
    const grid1 = $NG.getCmpApi("p_form_audit_cnt_inner");
    const grid2 = $NG.getCmpApi("p_form_audit_cnt_outer");

    {//初始化逻辑BEGIN
        if (mstform) {
            console.log(mstform.name + ' is ready');
            cntMFilter();
        } else {
            console.error('mstform is not available');
        };
    }//初始化逻辑END

    // setTimeout(()=>{
    //     $NG.updateUI((updater)=>{
    //         updater.fieldSetForm.p_form_internal_audit.phid_fill_psn.setProps({
    //             hidden:true
    //         })
    //     })
    // },300)

    function sumAmtHead(map, exc) {
        const mstform = $NG.getCmpApi("p_form_internal_audit");
        const date = new Date()
        map.u_pro_sr_ce = (Number(map.u_mbsd_amt) || 0) - (Number(map.u_by_amt) || 0)
        map.u_mll_ce = (Number(map.u_mbmll) || 0) - (Number(map.u_srmll) || 0)
        map.u_pro_qy_qk_amt = (Number(map.u_mll_ce) || 0) * (Number(map.u_mbsd_amt) || 0)
        map.u_sywzje = exc.sywzfx_amt
        map.bill_name = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}${mstform.getItem("phid_fill_psn").getText()}${mstform.getItem("phid_pc").getText()}成本核算`
    }

    // 表头赋值/计算(封装) 防止$NG.updateState异步赋值带来的取数错误
    $NG.setHeadValue = {}
    initHead('p_form_internal_audit', sumAmtHead)
    function initHead(table, fun) {
        const mstform = $NG.getCmpApi(table);
        const val = mstform.getValues()
        const headKey = ["bill_no", "bill_name", "u_cshte", "u_htxe", "u_qzbgje", "u_qdmll", "u_dqmll", "u_jsje", "u_cz_amt", "u_by_amt",
            "u_mbsd_amt", "u_pro_cnt_wcl", "u_fx_amt", "u_inner", "u_outer", "u_mbmll", "u_srmll", "u_mll_ce", "u_pro_qy_qk_amt", "u_pro_sr_ce",
            "u_sywzje"]

        // 临时变量记录，不参与赋值(当缓存使用)可以参与表头计算
        const excludes = ["sywzfx_amt"]

        // 劫持原表头赋值函数，防止2边数据不同步
        const option = $NG.updateState;
        $NG.updateState = function (...args) {
            const updater = args[0];
            args[0] = function (...innerArgs) {
                const targetObj = innerArgs[0].data[table];
                if (targetObj) {
                    const originalSetProps = targetObj.setProps;
                    targetObj.setProps = function (props) {
                        console.log(`劫持到的props`, props);
                        if (!props.hook) {
                            for (let key in props) {
                                if (headKey.includes(key)) {
                                    $NG.setHeadValue.manualSet(key, props[key]);
                                }
                            }
                        }
                        return originalSetProps.call(this, props);
                    };
                }
                return updater.apply(this, innerArgs);
            };

            option.apply(this, args);
        };

        Object.defineProperties($NG.setHeadValue, {
            _sumAmt: { // 赋值渲染 + 表头计算计算
                writable: false,
                enumerable: true,
                configurable: false,
                value: function (key) { // 要跳过的key
                    const map = headKey.reduce((value, item) => {
                        value[item] = this["_" + item]
                        return value
                    }, {})
                    // 排除
                    const exclude = excludes.reduce((value, item) => {
                        value[item] = this["_" + item]
                        return value
                    }, {})
                    // 表头计算
                    fun(map, exclude)

                    if (key) {
                        delete map[key]
                    }
                    console.log(`赋值信息`, map, key);
                    $NG.updateState((updater) => {
                        updater.data[table].setProps({
                            hook: true,
                            ...map
                        })
                    })
                }
            },
            noRender: { // 不进行渲染赋值
                writable: false,
                enumerable: true,
                configurable: false,
                value: function (key, val) {
                    this["_" + key] = val
                }
            },
            manualSet: { // 禁止渲染手输入 但要计算
                writable: false,
                enumerable: true,
                configurable: false,
                value: function (key, val) {
                    this["_" + key] = val
                    this._sumAmt(key)
                }
            },
            manySetVal: { // 多字段赋值，类 _sunAmt
                writable: false,
                enumerable: true,
                configurable: false,
                value: function (map) {
                    for (let key in map) {
                        this['_' + key] = map[key]
                    }
                    this._sumAmt()
                }
            }
        })
        // 创建不可枚举字段，让不加 _ 的变量代理私有属性(防异步)
        const ini = (item, bool) => {
            Object.defineProperties($NG.setHeadValue, {
                [item]: {
                    enumerable: true,
                    configurable: false,
                    set(val) {
                        console.log(`有key赋值了`, item, val);
                        this['_' + item] = val
                        if (window._sum_amt_lock) {
                            clearTimeout(window._sum_amt_lock)
                        }
                        window._sum_amt_lock = setTimeout(() => {
                            this._sumAmt()
                        }, 1000)
                    },
                    get() {
                        return this['_' + item]
                    }
                },
            })
            Object.defineProperties($NG.setHeadValue, {
                ["_" + item]: {
                    value: val[item],// 设置初始值
                    writable: true,
                    enumerable: false,
                    configurable: false,
                },
            })
            // 如果发生手输入改变
            if (bool) {
                useValuesChange(({ args }) => {
                    $NG.setHeadValue.manualSet(item, args[0][item])
                }, item)
            }
        }
        headKey.forEach(item => {
            ini(item, true)
        })
        excludes.forEach(el => {
            ini(el, false)
        })
    }

    if (page.oType == "add") {
        getInDate()
        var pc = mstform.getItem("phid_pc");
        console.log("123123");
        if (pc.getValue() > "0") {
            GetCntInfoPC(pc.getValue())
            var pcname = page.getLayout().fieldSetForm.PaymentBill.getItem("phid_pc").getRawValue().label
            $NG.updateState((updater) => {
                //文本
                updater.data.p_form_internal_audit.setProps({
                    bill_name: pcname + "内部审计",
                });
            });
        }

    }

    if (page.oTypew != 'view') {
        getProjectSybyTotalAmt()
        getSjcztbTotalAmt()
        getSbqdInitFromInfo()
        getSbqdHeadInfoByPhidPc()
        getSbqdTotalGapAmt()
        getCbhsHeadInfo()
        getSywzFxInfo()
        getCntCount("p_form_internal_audit", "u_ht_name", () => {
            getProjectSybyTotalAmt()
            GetCntInfo(mstform.getItem('u_ht_name').getValue())
        })
    }


    //项目名称变化时自动带入产品线、事业部等
    useValuesChange(({ args }) => {
        console.log('项目监听', args[0]);
        //const phid_pc = args[0].pc.PhId;
        const phid_pc = args[0].phid_pc?.value;
        //从项目取值
        if (phid_pc) {
            console.log(phid_pc);
            //从项目取值
            GetCntInfoPC(phid_pc)

        }
        var pcname = mstform.getItem("phid_pc").getRawValue().label
        $NG.updateState((updater) => {
            //文本
            updater.data.p_form_internal_audit.setProps({
                bill_name: pcname + "内部审计",
                u_ht_name: {
                    label: null,
                    value: null
                }
            });
        });
        getSjcztbTotalAmt()
        getSbqdInitFromInfo()
        getSbqdHeadInfoByPhidPc()
        getSbqdTotalGapAmt()
        getCbhsHeadInfo()
        getSywzFxInfo()
        if (!mstform.getItem('u_ht_name').getValue()) return
        getCntCount("p_form_internal_audit", "u_ht_name", () => {
            getProjectSybyTotalAmt()
            GetCntInfo(mstform.getItem('u_ht_name').getValue())
        })
    }, "p_form_internal_audit.phid_pc");

    //合同名称变化时自动带入产品线、事业部等
    useValuesChange(({ args }) => {
        console.log(args[0]);
        //const phid_pc = args[0].pc.PhId;
        const u_ht_name = args[0].u_ht_name.value;
        //从项目取值
        if (u_ht_name) {
            console.log(u_ht_name);
            //从项目取值
            GetCntInfo(u_ht_name)

        }
        getProjectSybyTotalAmt()
    }, "p_form_internal_audit.u_ht_name");

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 定义通用的行数据处理函数
    function calculateRowSums() {
        const tables = [grid1.getRows(), grid2.getRows()]
        console.log(`tables`, tables);
        let bsbyhsAmt = 0; // u_bsbyhs_amt 总和
        let mbsdje = 0;    // u_mbsdje 总和
        let fxje = 0;      // u_fxje 总和
        let fx_amt = 0

        tables.forEach((table, index) => {
            if (!Array.isArray(table)) {
                console.warn(`忽略非数组类型的表体数据 (索引 ${index}):`, table);
                return; // 跳过非数组类型的数据
            }

            table.forEach((row) => {
                bsbyhsAmt += parseFloat(row.u_bsbyhs_amt || 0);
                mbsdje += parseFloat(row.u_mbsdje || 0);
                fxje += parseFloat(row.u_fxje || 0);
                fx_amt += parseFloat(row.u_fxje || 0)
            });
        });

        return { bsbyhsAmt, mbsdje, fxje };
    }

    // 更新表头字段的通用逻辑
    function updateAuditFields() {
        const sums = calculateRowSums();
        console.log(`debug表头累计`, sums);

        // 获取合同金额
        const u_cshte = parseFloat(mstform.getItem("u_cshte").getValue() || 0);
        // if (u_cshte === 0) {
        //     console.error("合同金额不能为零");
        //     return;
        // }

        // 更新表头字段，确保累加而不是覆盖
        $NG.updateState((updater) => {

            updater.data.p_form_internal_audit.setProps({
                u_jsje: sums.bsbyhsAmt, // 累加结算金额
                u_fx_amt: sums.fxje, // 累加费用金额
                u_mbsd_amt: sums.mbsdje, // 累加目标设定金额
                u_pro_cnt_wcl: sums.mbsdje / u_cshte, // 重新计算完成率
            });
        });
    }

    // 内部审计金额计算逻辑
    useUpdateRows(({ args }) => {
        console.log("args:", args); // 打印 args 内容
        updateAuditFields();
    }, "p_form_audit_cnt_inner");

    // 外部审计金额计算逻辑
    useUpdateRows(({ args }) => {
        console.log("args:", args); // 打印 args 内容
        updateAuditFields();
    }, "p_form_audit_cnt_outer");

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function updateRecord(record) {
        record.u_bsbyhs_amt = (parseFloat(record.u_bsby) || 0) * (parseFloat(record.prc) || 0);
        record.u_bsby_amt = (parseFloat(record.u_bsby) || 0) * (parseFloat(record.prc) || 0) * (1 - (parseFloat(record.taxrate) || 0));
        record.u_bsbyc = (parseFloat(record.u_bsbyhs_amt) || 0) - (parseFloat(record.u_ljbyhs_amt) || 0);
        record.u_mbsdje = (parseFloat(record.u_mbsdsj) || 0) * (parseFloat(record.prc) || 0);
        record.u_fxje = (parseFloat(record.u_mbsdje) || 0) - (parseFloat(record.u_bsbyhs_amt) || 0);

        return record;
    }

    // 内部审计数据变更逻辑
    useDataIndexChange(({ args }) => {
        const record = args[0];
        console.log("Internal Record:", record);

        // 更新记录
        const updatedRecord = updateRecord(record);
        // 更新表格行
        grid1.updateRow(updatedRecord);
    }, "p_form_audit_cnt_inner.u_mbsdsj");

    useDataIndexChange(({ args }) => {
        const record = args[0];
        console.log("Field Changed2:", record);

        // 更新记录
        const updatedRecord = updateRecord(record);

        // 更新表格行
        grid1.updateRow(updatedRecord);
    }, "p_form_audit_cnt_inner.u_bsby");

    // 外部审计数据变更逻辑
    useDataIndexChange(({ args }) => {
        const record = args[0]; // 获取当前记录
        console.log("External Record1:", record);
        // 更新记录
        const updatedRecord = updateRecord(record);
        // 更新表格行
        grid2.updateRow(updatedRecord);
    }, "p_form_audit_cnt_outer.u_mbsdsj", "p_form_audit_cnt_outer.u_bsby");

    // 外部审计数据变更逻辑
    useDataIndexChange(({ args }) => {
        const record = args[0]; // 获取当前记录
        console.log("External Record2:", record);
        // 更新记录
        const updatedRecord = updateRecord(record);
        // 更新表格行
        grid2.updateRow(updatedRecord);
    }, "p_form_audit_cnt_outer.u_bsby");


    // 获取项目收入报验金额汇总
    function getProjectSybyTotalAmt() {
        const cnt = mstform.getItem("u_ht_name").getValue()
        if (!cnt) return
        $NG.execServer("getProjectSybyTotalAmt", { cnt }, (res) => {
            if (res.count == 0) return
            const datas = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_by_amt: datas.total_amt_vat
                })
            })
        })
    }

    // 获取实际产值填报
    function getSjcztbTotalAmt() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getSjcztbTotalAmt", { phid_pc }, (res) => {
            if (res.count == 0) return
            const datas = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_cz_amt: datas.total_amt
                })
            })
        })
    }

    // 获取设备清单变更签证变更金额
    function getSbqdTotalGapAmt() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getSbqdTotalGapAmt", { phid_pc }, (res) => {
            if (res.count == 0) return
            const _data = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_qzbgje: _data.eq_total_amt_vat
                })
            })
        })
    }
    // 获取设备清单表头信息
    function getSbqdHeadInfoByPhidPc() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getSbqdHeadInfoByPhidPc", { phid_pc }, (res) => {
            if (res.count == 0) return
            const _data = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_dqmll: _data.u_signed_gm_rate
                })
            })
        })
    }

    // 获取设备清单初始单的数据
    function getSbqdInitFromInfo() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getSbqdInitFromInfo", { phid_pc }, (res) => {
            if (res.count == 0) return
            const datas = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_qdmll: datas.u_signed_gm_rate
                })
            })
        })
    }

    // 获取成本核算信息
    function getCbhsHeadInfo() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getCbhsHeadInfo", { phid_pc }, (res) => {
            if (res.count == 0) return
            const datas = JSON.parse(res.data)[0].extendObjects
            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_mbmll: datas.u_ycztwgmll
                })
            })
        })
    }

    // 剩余物资分析金额
    function getSywzFxInfo() {
        const phid_pc = mstform.getItem("phid_pc").getValue()
        if (!phid_pc) return
        $NG.execServer("getSywzFxInfo", { phid_pc }, (res) => {
            if (res.count == 0) return
            const datas = JSON.parse(res.data)[0].extendObjects
            $NG.setHeadValue.sywzfx_amt = datas.total_amt
        })
    }
});

function GetCntInfoPC(pcvalue) {

    $NG.execServer("GetCntInfo_sj", { pc: pcvalue }, function (res) {
        console.log(res);
        if (res.count == "1") {
            const data = JSON.parse(res.data);
            const cntid = data[0].extendObjects.cntid;
            console.log(cntid)
            getProjectSybyTotalAmt(cntid)
            GetCntInfo(cntid)
            getSbqdInfo_inner(cntid)
            getSbqdInfo_outer(cntid)

        }
        cntMFilter();

    });


}

// 获取当前时间工作周期
function getInDate() {
    $NG.execServer("getInDate", {}, (res) => {
        const date = new Date()
        if (res.count == 0) return
        const datas = JSON.parse(res.data)[0].extendObjects
        $NG.updateState((updater) => {
            updater.data.p_form_internal_audit.setProps({
                phid_cycle: {
                    label: datas.bill_name,
                    value: datas.phid
                },
                u_app_dt: `${date.getFullYear()}-${String(date.getMonth()).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`
            })
        })
    })
}

// 获取项目收入报验金额汇总
function getProjectSybyTotalAmt(cntid) {
    const mstform = $NG.getCmpApi("p_form_internal_audit");
    let cnt = mstform.getItem("u_ht_name").getValue()
    if (cntid) {
        cnt = cntid
    }
    if (!cnt) return
    $NG.execServer("getProjectSybyTotalAmt", { cnt }, (res) => {
        if (res.count == 0) return
        const datas = JSON.parse(res.data)[0].extendObjects
        $NG.updateState((updater) => {
            updater.data.p_form_internal_audit.setProps({
                u_by_amt: datas.total_amt_vat
            })
        })
    })
}
function GetCntInfo(htvalue) {
    $NG.execServer("GetCntInfo_sj_ht", { cnt: htvalue }, function (res) {
        console.log(res);
        if (res.count == "1") {
            const data = JSON.parse(res.data);
            const ht_no = data[0].extendObjects.htno;
            const jf = data[0].extendObjects.jf;
            const jf_name = data[0].extendObjects.jf_name;
            const yf = data[0].extendObjects.yf;
            const yf_name = data[0].extendObjects.yf_name;
            const cntid = data[0].extendObjects.cntid;
            const cntname = data[0].extendObjects.cntname;
            const syb = data[0].extendObjects.syb;
            const syb_name = data[0].extendObjects.syb_name;
            const xmjl = data[0].extendObjects.xmjl;
            const xmjl_name = data[0].extendObjects.xmjl_name;
            const qzbgje = data[0].extendObjects.qzbgje || 0;
            const qdmll = data[0].extendObjects.qdmll || 0;
            const dqmll = data[0].extendObjects.dqmll || 0;
            const htxe = data[0].extendObjects.htxe || 0;
            const cshte = data[0].extendObjects.cshte || 0;
            const sywzje = data[0].extendObjects.sywzje || 0;
            const descript = data[0].extendObjects.descript;
            const ljcz = data[0].extendObjects.ljcz || 0;
            const ljby = data[0].extendObjects.ljby || 0;

            $NG.updateState((updater) => {
                updater.data.p_form_internal_audit.setProps({
                    u_cnt_no: ht_no,
                    u_htxe: htxe,
                    u_cshte: cshte,
                    u_sywzje: sywzje,
                    u_xmgk: descript,
                    u_sywzje: sywzje,
                    u_xmgk: descript,
                    u_ht_name: {
                        value: cntid,
                        label: cntname,
                    },
                    phid_customer_ent: {
                        value: jf,
                        label: jf_name,
                    },
                    phid_supply_ent: {
                        value: yf,
                        label: yf_name,
                    },
                    u_division: {
                        value: syb,
                        label: syb_name,
                    },
                    u_xmjl: {
                        value: xmjl,
                        label: xmjl_name,
                    },
                    phid_org: {
                        value: syb,
                        label: syb_name,
                    },
                });
            });
            console.log(cntid)
            getSbqdInfo_inner(cntid)
            getSbqdInfo_outer(cntid)


        }
        cntMFilter();

    });


}
function getSbqdInfo_inner(htvalue) {

    const grid1 = $NG.getCmpApi("p_form_audit_cnt_inner");
    grid1.clearRows();
    $NG.execServer('getsbqdinfo_ht', { ht: htvalue }, function (res) {
        if (res.count == 0) return;
        const data = JSON.parse(res.data);
        var gridArr = []; // 定义表体数组
        var gridCount = res.count; // 增加的行数, 可根据从数据库中取出的数据总数增行
        for (var i = 0; i < gridCount; i++) {
            // 列出需要赋值的表体字段
            var gridObj = {};
            gridObj.u_sbqd_no = data[i].extendObjects.u_equipment_list_no;
            gridObj.u_sbqd_name = data[i].extendObjects.sbid;
            gridObj.u_sbqd_name_EXName = data[i].extendObjects.u_equipment_list_name
            gridObj.u_ggxh = data[i].extendObjects.u_spec;
            gridObj.u_jscs = data[i].extendObjects.u_tech_params;
            gridObj.u_unit = data[i].extendObjects.u_msunit;
            gridObj.u_unit_EXName = data[i].extendObjects.msname;
            gridObj.prc = data[i].extendObjects.u_cnt_prc_vat;
            gridObj.qty = data[i].extendObjects.u_qty;
            gridObj.u_sbqd_qty = data[i].extendObjects.u_qty;
            gridObj.u_ljbygcl = data[i].extendObjects.ljbysl;
            gridObj.u_ljbyhs_amt = data[i].extendObjects.ljbyje_vat;
            gridObj.taxrate = data[i].extendObjects.u_cnt_item_tax_rate;
            gridObj.u_bsby = data[i].extendObjects.ljbssl;
            gridObj.u_bsbyhs_amt = data[i].extendObjects.byhsje;
            gridObj.u_bsby_amt = data[i].extendObjects.bywsje;
            gridObj.u_bsbyc = data[i].extendObjects.bsbyce;
            gridObj.u_ljbyse = data[i].extendObjects.ljbyse;

            gridArr.push(gridObj);
        }

        // 清空表格内容（放在循环外部）
        grid1.clearRows().then(() => {
            grid1.addRows(gridArr);
        })

        // 调用新增表体行数据的函数

        // 更新RichHelp字段（如果需要）
        // 这里假设有一个方法可以刷新或重新渲染表格，以确保RichHelp字段正确显示
        grid1.refreshView(); // 或者使用grid.refreshData();
    });



}


function getSbqdInfo_outer(htvalue) {
    const grid2 = $NG.getCmpApi("p_form_audit_cnt_outer");
    grid2.clearRows();
    $NG.execServer('getsbqdinfo_ht_out', { ht: htvalue }, function (res) {
        if (res.count == 0) return;
        const data = JSON.parse(res.data);
        var gridArr = []; // 定义表体数组
        var gridCount = res.count; // 增加的行数, 可根据从数据库中取出的数据总数增行

        for (var i = 0; i < gridCount; i++) {
            // 列出需要赋值的表体字段
            var gridObj = {};
            gridObj.u_sbqd_no = data[i].extendObjects.u_equipment_list_no;
            gridObj.u_sbqd_name = data[i].extendObjects.sbid;
            gridObj.u_sbqd_name_EXName = data[i].extendObjects.u_equipment_list_name
            gridObj.u_ggxh = data[i].extendObjects.u_spec;
            gridObj.u_jscs = data[i].extendObjects.u_tech_params;
            gridObj.u_unit = data[i].extendObjects.u_msunit;
            gridObj.u_unit_EXName = data[i].extendObjects.msname;
            gridObj.prc = data[i].extendObjects.u_cnt_prc_vat;
            gridObj.qty = data[i].extendObjects.u_qty;
            gridObj.u_sbqd_qty = data[i].extendObjects.u_qty;
            gridObj.u_ljbygcl = data[i].extendObjects.ljbysl;
            gridObj.u_ljbyhs_amt = data[i].extendObjects.ljbyje_vat;
            gridObj.taxrate = data[i].extendObjects.u_cnt_item_tax_rate;
            gridObj.u_bsby = data[i].extendObjects.ljbssl;
            gridObj.u_bsbyhs_amt = data[i].extendObjects.byhsje;
            gridObj.u_bsby_amt = data[i].extendObjects.bywsje;
            gridObj.u_bsbyc = data[i].extendObjects.bsbyce;
            gridObj.u_ljbyse = data[i].extendObjects.ljbyse;

            gridArr.push(gridObj);
        }

        // 清空表格内容（放在循环外部）
        grid2.clearRows().then(() => {
            grid2.addRows(gridArr);

        })

        // 调用新增表体行数据的函数

        // 更新RichHelp字段（如果需要）
        // 这里假设有一个方法可以刷新或重新渲染表格，以确保RichHelp字段正确显示
        grid2.refreshView(); // 或者使用grid.refreshData();
    });



}

//合同根据项目ID过滤
function cntMFilter() {
    $NG.updateUI((updater, state) => {
        console.log('过滤参数检查', updater);
        updater.fieldSetForm.p_form_internal_audit.u_ht_name.setProps({
            onBeforeOpen: async () => {
                var phid_pc = $NG.getCmpApi('p_form_internal_audit').getItem('phid_pc').getValue();
                if (!phid_pc) {
                    $NG.alert("请先选择项目");
                    return false;
                } else {
                    return true;
                }
            },
            ...(!!$NG.getCmpApi('p_form_internal_audit').getItem('phid_pc').getValue() && {
                clientSqlFilter: {
                    'pcm3_cnt_m.phid_pc': $NG.getCmpApi('p_form_internal_audit').getItem('phid_pc').getValue()
                }
            }),
        });
    });
}


//获取合同数量
function getCntCount(table, key, fun, otherFun) {
    if (!$NG.getCmpApi(table).getItem("phid_pc").getValue()) return;
    $NG.execServer("getCntCount", { type: 1, phid_pc: $NG.getCmpApi(table).getItem("phid_pc").getValue() }, (res) => {
        switch (res.count) {
            case 0:
                return;
            case 1:
                const datas = JSON.parse(res.data)[0].extendObjects;
                const temp_map = {};
                temp_map[key] = datas.phid;
                temp_map[`${key}_EXName`] = datas.bill_name;
                $NG.updateState((updater) => {
                    updater.data[table].setProps({
                        ...temp_map,
                    });
                    setTimeout(() => {
                        fun();
                        if (otherFun) {
                            otherFun();
                        }
                    }, 200);
                });
        }
    });
}